<?php

declare(strict_types=1);

/**
 * @Author:     Frank
 * @contact     frank_hhm@163.com
 * @Date:       2023-02-15 10:23:00
 * @Last Modified time: 2023-02-15 12:16:35
 */
namespace frank\base;

use think\facade\Cache;

/**
 * 定时任务基类
 */
class BaseTask
{
	/**
     * 定时执行任务
     */
    protected function setInterval( string $key, int $expire, callable $callback)
    {
        if (!$this->hasTaskId($key)) {
            $this->setTaskId($key, $expire);
            return $callback();
        }
    }

    /**
     * 获取任务ID
     * @param string $key
     * @return mixed
     */
    protected function hasTaskId( string $key)
    {
        return Cache::has("Listener:$key");
    }

    /**
     * 设置任务ID
     * 用于实现定时任务的间隔时间, 如果任务ID存在并未过期, 则不执行任务
     * @param string $key
     * @param int $expire 任务ID过期时长(单位:秒)
     * @return bool
     */
    protected function setTaskId( string $key, int $expire = 60)
    {
        return Cache::set("Listener:$key", true, $expire);
    }
}